<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <script>
        //封装实际参数的对象 arguments，可以理解为伪数组，可以修改，但不能添加元素,不能调用数组方法
        //函数重载的实现方法 判断arguments.length   

        //arguments.callee表示当前指向的函数体
        function fun() {
            console.log('arguments.callee表示的是当前的函数对象吗', arguments.callee, arguments.callee == fun);
        }
        fun()

        //argument映射规则 映射实际参数
        function testyingshe1(a, b) {
            a = 22;
            arguments[0] = 3;
            //argument[0] 和第一个实参相互绑定，只是映射 不是同一个变量
            console.log(a, 'a的值是'); // 打印出3
        }
        testyingshe1('abbb');

        function testyingshe2(a, b) {
            b = 3;
            console.log('argumentp[1]的值是', arguments[1]); // 实参都没值 所以undefined 
        }
        testyingshe2(1);

        // 数组求和
        function sumarr() {
            var sum = 0;
            for (var a = 0; a < arguments.length; a++) {
                sum += arguments[a];
            }
            return sum
        }
        console.log('数组求和的结果是', sumarr(200, 200, 11, 1111, 1));

        // 实际参数冒泡排序
        function ArgumentSort() {
            let temp;
            for (var a = 0; a < arguments.length - 1; a++) { //次数 两两比较 arr.length-1次
                for (var b = 0; b < arguments.length - a; b++) { //数组里面临近的两两比较
                    if (arguments[b] > arguments[b + 1]) {
                        temp = arguments[b];
                        arguments[b] = arguments[b + 1]
                        arguments[b + 1] = temp
                    }
                }
            }
            return arguments
        }
        console.log('冒泡排序结果',ArgumentSort(23,4,2,1,2,5));

        // 找出实参中最大的数据
        function findArgumentMax(){
            let max = 0;
            for(var a of arguments){
               if (a >max){
                   max = a
               }
            }
            return max 
        }
        console.log( findArgumentMax(22,112,33,1,2));
    </script>
</body>

</html>